/* 
 * UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
 * CENTRO DE TECNOLOGIA
 * DEPARTAMENTO DE ENGENHARIA DE COMPUTA��O E AUTOMA��O
 * PROJETO E DESENVOLVIMENTO DE SOFTWARE
 * 
 * BACO SYSTEM
 * CLASSE: Persistencia
 * VERS�O ORIGINAL: Caroline Albuquerque Dantas Silva
 * MODIFICA��ES: ---
 * */
package bacoopc.persistencia;

import java.io.*;
import java.sql.*;
import java.util.Properties;

public abstract class Persistencia {

    protected static Connection con = null;

    public Persistencia() {
        if (con == null) {
            conectar();
        }
    }

    /**Configura a conex�o com a base de dados*/
    private void conectar() {
        try {
            //Registra o driver JDBC para o MySQL.
            Class.forName("com.mysql.jdbc.Driver");

            //Define a URL para o servidor de Banco de dados
            String url = "jdbc:mysql://localhost:3306/Baco";

            //Inicializa a conex�o. Par�metros: (URL, usu�rio, senha)
            con = DriverManager.getConnection(url, "root", "123");

            //Mostra a informa��es de conex�o
            System.out.println("Connection: " + con);
        } catch (ClassNotFoundException cnfex) {
            System.out.println("N�o foi poss�vel encontrar driver para o MySQL.");
        } catch (SQLException sqlex) {
            System.out.println("Imposs�vel conectar ao Banco de Dados.");
        }
    }

    static class QueryManager {

        protected Properties queries;
        protected static QueryManager queryManager =
                new QueryManager("c:\\Baco\\instrucoesMysql.txt");

        public static QueryManager getQueryManager() {
            return queryManager;
        }

        private QueryManager(String arquivo) {
            queries = new Properties();

            try {
                queries.load(new FileInputStream(arquivo));
            } catch (FileNotFoundException e) {
                System.out.println("N�o foi poss�vel encontrar o arquivo selecionado.");
            } catch (IOException e) {
                System.out.println("Falha na leitura do arquivo.");
            }
        }

        public PreparedStatement getPreparedStatement(Connection conn, String queryName) throws SQLException {
            String query = this.queries.getProperty(queryName);
            System.out.println(query);
            return conn.prepareStatement(query);
        }
    }
}

